<?php
class CandidatosController extends AppController {

	var $name = 'Candidatos';

	function index() {
		
        $this->Candidato->recursive = 0;
		$candidato = $this->Candidato->Entidade->findByUserId($this->Session->read('Auth.User.id'));
        $this->set('candidato',$candidato);
	}
	function home() {
		$this->Candidato->recursive = 0;
		$this->set('candidatos', $this->paginate());
	}    
    
    function registro(){
        if(!empty($this->data)){
            $this->data['Candidato']['Entidade']['User']['username']=$this->data['Candidato']['Entidade']['email'];
            $this->data['User']=$this->data['Candidato']['Entidade']['User'];
            $this->data['User']['password'] = md5($this->data['User']['password']);
            $this->Candidato->Entidade->User->create();
            if($this->Candidato->Entidade->User->save($this->data)){
                $this->Candidato->Entidade->User->recursive = -1;
                $usuario = $this->Candidato->Entidade->User->findAllByUsername($this->data['Candidato']['Entidade']['User']['username']);
                $this->data['Candidato']['Entidade']['user_id'] = $usuario[0]['User']['id'];
                $this->data['Entidade'] = $this->data['Candidato']['Entidade'];
                $this->Candidato->Entidade->create();
                if($this->Candidato->Entidade->save($this->data['Entidade'])){
                    $entidade = $this->Candidato->Entidade->recursive = -1;
                    $entidade = $this->Candidato->Entidade->findAllByEmail($this->data['Candidato']['Entidade']['email'],array('id'));
                    $this->data['Candidato']['entidade_id'] = $entidade[0]['Entidade']['id'];
                    $this->Candidato->create();
                    if($this->Candidato->save($this->data)){
                       $this ->Session->write("justregistered", $this->data['Candidato']['Entidade']['email']);
                       $this -> Session -> write("justpass", $this->data['Candidato']['Entidade']['User']['password']);
                       $this -> Session -> write("justname", $this->data['Candidato']['Entidade']['name']);
                        $this->Session->setFlash(__('A sua conta foi criada com sucesso', true));
                       $this->redirect(array('action' => 'confirmacao'));
                    }
                }
            }
            
        }
        
        $paises = $this->Candidato->Entidade->Paise->find('list');
        $provincias = $this->Candidato->Entidade->Provincia->find('list');
        $distritos = $this->Candidato->Entidade->Distrito->find('list');
        $this->set(compact('paises','provincias','distritos'));
    }
    
    function confirmacao(){
        
    }
    function adicionar1(){
        
    }
	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid candidato', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('candidato', $this->Candidato->read(null, $id));
	}

	function add() {
		if (!empty($this->data)) {
			$this->Candidato->create();
			if ($this->Candidato->save($this->data)) {
				$this->Session->setFlash(__('The candidato has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The candidato could not be saved. Please, try again.', true));
			}
		}
		$entidades = $this->Candidato->Entidade->find('list');
		$this->set(compact('entidades'));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid candidato', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->Candidato->save($this->data)) {
				$this->Session->setFlash(__('The candidato has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The candidato could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Candidato->read(null, $id);
		}
		$entidades = $this->Candidato->Entidade->find('list');
		$this->set(compact('entidades'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for candidato', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Candidato->delete($id)) {
			$this->Session->setFlash(__('Candidato deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Candidato was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
    
    function login(){
        if($this->Auth->user()){
            $this->redirect(array('action'=>'afterLogin'));
        }
    }
    
    function beforeFilter(){
        Security::setHash('md5');
        $this->Auth->allow('registro','confirmacao');
        $this->Auth->autoRedirect = false;
        $this->Auth->loginAction = array('controller' => 'candidatos', 'action' => 'login');
        $this->Auth->logoutRedirect = array('controller' => 'pages', 'action' => 'display');
        $this->Auth->loginRedirect = array('controller' => 'candidatos', 'action' => 'afterLogin');
        $this->Auth->loginError = "Dados Incorrectos";
        $this->Auth->actionPath = 'controllers/';
       // $this->Auth->fields = array('username' => 'username', 'password' => 'senha');


    }
    
    function afterLogin(){
        $entidade  = $this->Candidato->Entidade->find('first',array('conditions'=>array('Entidade.user_id'=>$this->Session->read('Auth.User.id'))));
        $this->Session->write('Entidade',$entidade);
        $this->redirect(array('controller'=>'pages','action'=>'home'));
        die();
    }
}
